Agile is considered as just a framework or guideline for “light weight” development methodologies. There are many methodologies that fall under the agile framework. [i] To determine if a particular project is suited to a specific agile methodology, it is important review the characteristics of each methodology. Extreme Programing is one of the earlier “lightweight” programming methodologies considered when developing the agile framework.[ii] Extreme Programming relies on continuously releasing iterations of working software to the customer. It also focuses on small teams to perform the development. Furthermore, it relies on continuous feedback from the customer. All of these characteristics match the framework described in the Agile Manifesto.[iii], [iv] Extreme Programming has a unique composite of processes and tools that are used in the development of software.
Extreme Programming meets the Agile
methodology framework.
One Agile characteristic it utilizes is its iterative releases.
Extreme Programming relies on short one to two week releases
of functioning software.
These short releases allow the customer to provide continuous
feedback as the software is released.[v]
[vi]
With the short iterations and
continuous feedback, developers are better able adjust to any
changes in the business environment.
With retrieval of continuous feedback, Extreme Programming,
like the other Agile programs, require close constant communication
with the customer and continuous customer participation in the
process.
Image retrieved from http://www.extremeprogramming.org/map/project.html
Constant customer participation and
communication is a very important aspect of the agile framework that
Extreme Programming fully adheres to.
The utilization of the customer’s participation is utilized
throughout the phases of Extreme Programming.[vii]
During the “planning phase,” one way Extreme Programming
teams implement customer participation and communication is by
acquiring
user stories
from the customers.
User stories used in Extreme Programming replaced the bulkier
requirements documentation obtained in the traditional methods.[viii]
Having the customer explain the features they want at the
beginning of each iteration, in as few as three sentences, keeps the
customers involved and keeps them aware of the status of the
project. Furthermore,
along with the user stories, negotiation of what features will
actually be included in each iteration is important to the planning
phase of Extreme Programming.
The negotiation activity is important because it helps
establish better understanding and more realistic expectations
between the development team and client.
When realistic expectations are established, they are more
likely to be met, which in turn leads to high customer satisfaction.
Another way Extreme Programming utilizes communication with
the customer is through obtaining continuous feedback during
testing. Acceptance
testing is one of the major activities where the customer
is heavily involved.
It provides the customer opportunity to provide the
development team with real world scenarios in which to test the
product against and verify that the functionalities in selected user
story for a particular iteration was properly met.[ix]
While continuous feedback
from the customer is crucial to the success of Extreme Programming,
another aspect that is important is team dynamics.
Team dynamics is a very important aspect of the agile framework and is implemented well with in the Extreme Programming methodology. Job rotation is a key aspect of Extreme Programming. It allows team members to learn different skill sets and prevents one team member from becoming so crucial to the project that it would result in failure if they were to leave. One way Extreme Programming teams have implemented job rations is through the paired programming setup. Paired programming has a team size of two, and are each assigned a functionality or a piece of code to work on for an iteration. On a daily or weekly basis, many teams have one member of each pair rotate to another pairing. One person is kept stationary on particular functionality to keep continuity, while the rotating member is able to acquire some knowledge on each piece of code being worked on.[x]
The iterative scheduling, close customer
interaction, team dynamics and other characteristics all contribute
to the makeup of the values of Extreme Programming which have been
categorized as, “simplicity, communication, feedback and courage.”[xi]
Simplicity relates to the small iterations and continuous
improvement to the code.
Nagy Ramadan Darwish said in his paper,
Improving the Quality of Applying eXtreme Programming (XP) Approach,
“XP encourages starting with the simplest solution” because “A
simple design always takes less time to finish than a complex one.”
Refactoring is an important
part of Extreme Programming’s simplicity value. It strives to
continuously simplify code, so that it is easier to maintain and
reuse code.[xii]
Feedback and communication
relates back to both the continuous communication with the customer
and the team dynamics.
For communication with customers, it is important to get their
perspective through use of user stories and continuous feedback. In
Šimičić Martina master’s thesis,
Managing Agile Software Development Projects: Best Practices and Project
Management Tools, Martina says,
“The main goal is to give to developers the same view as
customers have.”
[xiii] If a customer sees a
change in the business environment, through constant communication
with the customer, the developers will also be able to see the
change. Within teams,
communication can be seen in the use of paired programming because
paired programming is designed to share knowledge of code pieces
with multiple members.
Also Extreme Programming encourages shared ownership and open work
spaces to facilitate the free flow of ideas.
A unique aspect of
communication in Extreme Programming is the
standup meetings.
They allow communication to the entire team in a very efficient
manner, without the risk of entering into long drawn out discussions
that are not relevant to the entire team because no one wants to be
standing up for a long period of time.
Courage on the other hand relates to the ability of the
developers to make tough decisions and have the confidence to change
code as they see necessary.[xiv]
This relates to decisions related to refactoring and the
willingness to remove code already created in the pursuit of making
a better product.[xv]
Examining the characteristics and values behind Extreme
Programming; which characteristics are most important to
contributing to success?
Researchers have found that team dynamics and
customer contribution in planning were the most important aspects to
the performance of an Extreme Programming team.
Research by Stephen Wood, George Michaelides, and Chris
Thomson concluded in their research paper,
Successful Extreme Programming: Fidelity to the Methodology or Good Team
Working?, that “It has
shown that two key elements of the XP methodology– customer planning
and its specific protocols for teamwork –are important to its
success.” In their
study, they developed 9 hypothesis and used a method called “method
of multiple hypothesis.” They conducted these test on graduate and
undergraduate software engineering teams that were assigned to
develop software for either the university or commercial interests.
The dependent variable, performance, was measured through
feedback from the instructors, the client and the team members
themselves. Each
evaluator filled out a questionnaire on each team/individual,
designed on the evaluator’s perspective of the project.
Through the study,
researchers found that there was a positive correlation between
“XP-specific - team factors (continuous integration, coding
standards, and collective code ownership)” and performance.
Another factor that had a positive correlation with
performance was “customer planning (release planning/planning game,
customer access, short releases, and stand-up meeting).”
While team factors and customer planning had a positive
correlation with performance, foundation related activities such as
testing, paired programming and refactoring, had a negative
correlation with performance.
Therefore, it was concluded based on the variables of the
study, that foundation activities may have been creating “barriers
to producing high quality products.”
Even with the results found in this one study, the results
may not necessarily apply to your team.
It is important to experiment and use the tools and processes
that work best with your team.[xvi]
Extreme programming utilizes many unique
processes and tools to implement the agile methodology.
Agile has been a successfully implemented at many companies.
When implementing Extreme Programming, it is important to
focus on have short iterations, constant customer communication and
small teams that are designed to allow for job rotation.
Even though processes like refactoring, testing and paired
programming were shown to have a negative effect in one research
conducted, it important to implement the tools, processes and
methodologies that work best for your team.
Many teams choose to use combination of multiple agile
methodologies.
[i]
Ambily O. A., Dr. T. Judeth Malliga. Agile Software
Development an Approach to Light Weight from Heavy Weight.
International Journal of Engineering Science and Technology,
399-405
[ii] Ibid,
[iii] Wooda,
S., George Michaelides, G. ,
Thomson, C.
Successful extreme programming: Fidelity to the
methodology or good teamworking?
Information and
Software Technology vol. 55, 2013, 660-672
[iv] Darwish,
Nagy Ramadan.
Improving the Quality of Applying eXtreme Programming
(XP) Approach.
International Journal of Computer Science and Information
Security,vol. 9, No.11, 2011, 16-22
[v] Wells,Don.
Extreme Programming.org. (1999) Retrieved from
http://www.extremeprogramming.org/rules/releaseoften.html
[vi] Beck, K.,
"Embracing change with extreme programming," Computer
, vol.32, no.10, pp.70,77, Oct 1999
[vii] Darwish,
Nagy Ramadan.
Improving the Quality of Applying eXtreme Programming
(XP) Approach.
International Journal of Computer Science and Information
Security,vol. 9, No.11, 2011, 16-22
[viii]
Copeland, Lee. Extreme Programming.
Computer World Inc.
2001. Retrieved from
http://www.computerworld.com/s/article/66192/Extreme_Programming?taxonomyId=11&pageNumber=1
[ix] Wells,
Don.
Extreme Programming.org. (1999) Retrieved from
http://www.extremeprogramming.org/rules/functionaltests.html
[x] Wells,
Don.
Extreme Programming.org. (1999) Retrieved from
http://www.extremeprogramming.org/rules/movepeople.html
[xi] Ibid.
[xii]
Usha, K.,
poonguzhali, A Quantitative Model for Improving the
Effectiveness of the Software Development Process using
Refactoring.
International Journal of Recent Trends in Engineering, Vol
2, No. 2, (November 2009.) 222-224
[xiii]
Martina, Šimičić.
Managing Agile Software Development Projects: Best
Practices and Project Management Tools. (2013) Retrieved
from
http://agile-only.com/master-thesis/software-dm/agile-s-dm/c-of-am-
[xiv] Darwish,
Nagy Ramadan.
Improving the Quality of Applying eXtreme Programming
(XP) Approach.
International Journal of Computer Science and Information
Security,vol. 9, No.11, 2011, 16-22
[xv] ibid
[xvi] Wooda,
S., George Michaelides, G. ,
Thomson, C.
Successful Extreme Programming: Fidelity to the
Methodology or Good Teamworking?
Information and Software Technology vol. 55, 2013, 660-672